<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<!--[if lt IE 9]><style type="text/css">@font-face { font-family: "JinBuGuoWebMono"; src: url("/d/mono.eot"); }</style><![endif]-->
<style media="all" type="text/css">
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1,h2 { text-align:center; background:#ddd; }
h2 { margin: 10px 5%; }
h2#auth_name {  background:#fff; }
dt { margin-top: 0.5em; }
</style>
<title>phpPgAdmin 常见问题解答 [金步国]</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head>

<body>
<h1>phpPgAdmin 常见问题解答</h1><h2 id="auth_name">译者：<strong><a href="../../index.html">金步国</a></strong></h2>
<hr />
<h3>版权声明</h3>
<p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p>
<ul>
<li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li>
<li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li>
<li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li>
</ul>
<h3>其他作品</h3>
<p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p>
<ul>
<li><a href="../../index.html">金步国作品集</a> [ <a href="../../index.html">http://www.jinbuguo.com/</a> ]</li>
</ul>
<h3>联系方式</h3>
<p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p>
<ul>
<li>Email(QQ)：70171448在QQ邮箱</li>
</ul>
<hr />

<p>以下内容来自于 phpPgAdmin-5.1 的 FAQ 文件。</p>
<h2>安装错误</h2>
<pre>
Q: 我已经安装了 phpPgAdmin ，但是当我企图使用它的时候，
   我得到一个错误说我安装的 PHP 没有正确的编译数据库支持。

A: 这个信息的意思是你的 PHP 没有将 PostgreSQL 支持编译进去。正确的配置选项是 '--with-pgsql' 。
   请仔细阅读 PHP 手册以获得关于如何编译 PHP 的更详细的信息。

   PostgreSQL 支持可以编译为 PHP 的动态扩展模块，
   因此如果你使用的是一个预编译版本的 PHP (Linux下的RPM包或Windows下的二进制文件之类)，
   也许你只需要做一件事就可以了：

   编辑 php.ini 文件并取消如下两行的注释：
   (Windows下通常位于 C:\WINDOWS 或 C:\WINNT 目录，Linux 下通常位于 /etc/php.ini )

    ;extension=php_pgsql.dll  ;Windows
    ;extension=pgsql.so       ;Linux

   使它变成：

    extension=php_pgsql.dll  ;Windows
    extension=pgsql.so       ;Linux

   在基于 Red Hat 或 Fedora 的 Linux 发行版上，
   该 PHP 扩展已经自动的在 /etc/php.d/pgsql.ini 文件中进行了配置，
   只要安装 php-pgsql 软件包即可。

   参见 <a href="http://www.php.net/manual/en/pgsql.setup.php">http://www.php.net/manual/en/pgsql.setup.php</a>
   以获取更多为 PHP 添加 PostgreSQL 支持的信息。


Q: 在 Windows 上使用 phpPgAdmin 时，我得到一个如下警告信息：

    "Warning: session_start() [function.session-start]:
     open(/tmp\sess_5a401ef1e67fb7a176a95236116fe348, O_RDWR) failed"

A: 你需要修改你的 php.ini 文件(通常位于 c:\windows 目录)并将如下行

    session.save_path = "/tmp"

   修改为

    session.save_path = "c:\windows\temp"

   并确保 c:\windows\temp 目录确实存在。
</pre>
<h2>登陆错误</h2>
<pre>
Q: 我总是得到一个"Login failed"，我确定我使用了<strong>正确</strong>的用户名和密码！

A: 有很多原因都会导致连接失败，不过一般都和 phpPgAdmin 本身没啥关系。

   首先，检查一下 PostgreSQL 日志，通常会有一条"FATAL"信息告诉你登陆失败的准确原因。
   你要么需要更正用户名或密码，要么需要给特定的角色赋予"LOGIN"权限，
   要么需要编辑 PostgreSQL 的"data"目录下的 pg_hba.conf 文件，
   以确保你拥有访问数据库服务器的权限。

   如果你在错误日志中没有看到任何"FATAL"信息，并且确实查看的是正确的日志文件，
   这表明你并没有真正连接到数据库。
   如果你是通过 TCP/IP 套接字进行连接(例如将 phpPgAdmin 安装在一个不同于 PostgreSQL 服务器的机器上)，
   那么可能的原因是 PostgreSQL 没有启用 TCP/IP 套接字连接。
   要启用它，你需要编辑 postgresql.conf 文件，修改其中的 listen_addresses 指令(比如设为"*")，
   关于此指令的细节请阅读官方手册。

   如果还是不能解决问题，那么 PHP 与 PostgreSQL 之间很可能是被防火墙或者 SELinux 之类的东西阻隔了。

Q: 有些用户会得到 "Login disallowed for security" 错误信息

A: phpPgAdmin 默认禁止空密码或特定用户( pgsql, postgres, root, administrator )登陆。
   在改变这个默认行为( 将 config.inc.php 文件中的 $conf['extra_login_security'] 设置为 false )之前，
   请首先仔细阅读 PostgreSQL 文档中关于客户端认证的部分，
   并充分理解如何修改 PostgreSQL 的 pg_hba.conf 配置文件以启用密码保护本地连接。

Q: 我可以使用任意密码登陆！

A: PostgreSQL 默认运行于"信任模式"。意思是对于本地连接不检查密码。
   我们强烈建议你修改 pg_hba.conf 文件，并将登陆类型改为 'md5'。
   注意，一旦你将'local'登陆类型修改为'md5'，你就可能需要在启动 PostgreSQL 的时候输入密码。
   要避开它，可以使用一个 .pgpass 文件，相关说明请参考 PostgreSQL 文档 libpq 部分。
</pre>
<h2>其它错误</h2>
<pre>
Q: 当我通过表单向数据库输入非ASCII数据时，它被当着十六进制数或 &amp;#1234; 格式插入。

A: 你没有使用正确的编码创建数据库。
   这个问题会出现在你企图向一个 SQL_ASCII 数据库输入元音变音(umlaut)，
   或者向 EUC-JP 数据库输入 SJIS 字符的时候。

Q: 当我 drop 并重建一个同名的表的时候，失败了。

A: 最简单的办法是使用 PostgreSQL 7.3 以上的版本。

Q: 当我浏览一个表的时候，'edit(编辑)'和'delete(删除)'链接并没有显示出来。

A: phpPgAdmin 将按顺序使用如下值作为行唯一标识符

	1. 主键
	2. 唯一索引(不能是部分索引或表达式索引)
	3. OID 列(需要连续扫描以进行更新，除非你在 OID 列上建立了索引)

   此外，唯一索引中的任何 NULL 值都会导致那一行不可编辑。同样，因为在同一张表中 OID 可能会重复，
   phpPgAdmin 将会在改变那一行以后进行确认修改的是否确实是那一行，否则将进行回滚。
</pre>
<h2>转储相关</h2>
<pre>
Q: 如何启用数据库转储功能？

A: 你需要配置 config.inc.php 文件，以指定 pg_dump 和 pg_dumpall 的位置。
   这样数据库导出功能将会显示出来。

Q: 我想在 Windows 上使用 pg_dump ，我应当到哪里下载 pg_dump.exe ？

A: 你需要安装 PostgreSQL 8.0 for Windows 或更高的版本。
   可以到 <a href="http://www.postgresql.org/download/windows">PostgreSQL for Windows</a> 去下载。
   安装好以后可以在 config.inc.php 中设置 pg_dump 和 pg_dumpall 的位置。通常可能位于：
   'C:\\Program Files\\Postgres\\9.3\\bin\\'
   这样的目录中。

Q: 为什么我不能在 SQL 窗口重新加载转储出来的 SQL 脚本？

A: 在执行 SQL 脚本时有如下限制：

	* 只有上传的 SQL 脚本可以包含 COPY 命令，并且必须使用 PHP 4.2 以上版本。

	* 'psql' 命令，比如 '\connect' 根本不会工作。

	* 多行 SQL 语句同样不会工作，比如：

		CREATE TABLE example (
			a INTEGER
		);

	* 在执行脚本的过程中不能切换数据库和用户。

   我们打算在将来的版本中减少这些限制，但是对于 PostgreSQL 本身的限制无能为力，
   因此我们推荐你使用'psql'工具来恢复完整的 SQL 转储结果。
</pre>
<h2>其它问题</h2>
<pre>
Q: 当插入行的时候，'Value(值)' 或 'Expression(表达式)' 选框是什么意思？

A: 选择'Expression'表示你可以使用函数、运算符、字段名等等，
   同时你需要正确的使用引号界定字符串值。
   选择'Value'则表示无论你输入的内容是什么，都将<strong>按原样</strong>插入数据库中。

Q: 为什么表的'Info(信息)'页始终不显示任何信息？

A: 'Info'页用于显示其它表到这个表的外键以及来自 PostgreSQL 的统计信息。
   而状态统计程序默认状态下并未启用。要启用它请查看 postgresql.conf 文件中的 stats_* 选项。
   将这些选项全部设为'true'并重启 PostgreSQL 即可。

Q: 为什么我不能下载 SQL 窗口中执行的查询的结果数据？

A: 你需要选中 'Paginate results' 选项以允许下载。

Q: 我想帮助 phpPgAdmin 的开发，我应当怎么做？

A: 我们非常愿意得到你的帮助！请阅读 DEVELOPERS 和 TRANSLATORS 文件。
</pre>

<hr />


</body></html>